package com.zengqingfa.algorithm.cz.chapter02;

import java.util.Arrays;

/**
 * @author zengqingfa
 * @className SelectSort
 * @description
 * @create 2021/8/6 18:48
 */
public class SelectSort {

    public static void main(String[] args) {
        Integer[] arr = {3, 1, 2, 5, 7, 4};
        sort(arr);
        System.out.println(Arrays.toString(arr));

    }

    public static void sort(Comparable[] arr) {
        //记录最小值的索引，假设第一个值为最小值
        int minIndex;
        //外出循环：把选择的最小值和循环的位置进行交换次数
        for (int i = 0; i < arr.length; i++) {
            minIndex = i;
            //内存循环：获取到当前选择次数中的最小元素
            for (int j = i + 1; j < arr.length; j++) {
                if (greater(arr[minIndex], arr[j])) {
                    minIndex = j;
                }
            }
            //交换位置
            swap(arr, i, minIndex);
        }
    }


    /**
     * 判断a与b的大小
     *
     * @param a
     * @param b
     * @return
     */
    public static boolean greater(Comparable a, Comparable b) {
        return a.compareTo(b) > 0;
    }

    /**
     * 交换索引i和j的数据
     *
     * @param arr
     * @param i
     * @param j
     */
    public static void swap(Comparable[] arr, int i, int j) {
        Comparable temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

}